#include <memory>
#include <jni.h>

#pragma once

namespace kawauso {

    class AbstractPluginExecutor {
        //
    protected:
        pid_t forkValue;
    public:
        AbstractPluginExecutor();
        AbstractPluginExecutor(AbstractPluginExecutor &) = delete;
        AbstractPluginExecutor(AbstractPluginExecutor &&) noexcept;
        virtual ~AbstractPluginExecutor();
    };

    class JavaPluginExecutor : public AbstractPluginExecutor {
        JavaVM *javaVM;
        JNIEnv *jniEnv;
    public:
        JavaPluginExecutor();
        JavaPluginExecutor(JavaPluginExecutor &) = delete;
        JavaPluginExecutor(JavaPluginExecutor &&) noexcept;
        ~JavaPluginExecutor() override;

        void test();
    };

}